package be.rugbyclubleuven.rachel.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import be.rugbyclubleuven.rachel.dao.LidDAO;
import be.rugbyclubleuven.rachel.dao.WedstrijdDAO;
import be.rugbyclubleuven.rachel.domain.Lid;
import be.rugbyclubleuven.rachel.domain.Wedstrijd;

/**
 * A service offering functionality associated with the RaCheL database.
 * 
 */
@Service
public class RachelService {

	@Autowired(required = true)
	private LidDAO lidDAO;
	@Autowired(required = true)
	private WedstrijdDAO wedstrijdDAO;

	/**
	 * Empty constructor.
	 */
	public RachelService() {
	}

	/**
	 * Constructs a new RachelService with given dependency injections
	 * @param lidDAO the LidDAO dependency injection
	 */
	public RachelService(LidDAO lidDAO) {
		this.lidDAO = lidDAO;
	}

	@Transactional
	public Lid getLid(Long id) {
		return lidDAO.findById(id);
	}

	@Transactional
	public Wedstrijd getWedstrijd(Long id) {
		Wedstrijd result = wedstrijdDAO.getWedstrijdWithSpelers(id);
		result.getSpelers();
		result.getNietSpelers();
		return result;
	}

	@Transactional
	public List<Wedstrijd> getFutureWedstrijdenByPloegId(Long ploegId, Integer start, Integer limit) {
		return wedstrijdDAO.getFutureWedstrijdByPloegId(ploegId, start, limit);
	}
}
